"""
API序列化器模块
定义REST API的数据序列化规则
"""
from rest_framework import serializers
from .models import Host

class HostSerializer(serializers.ModelSerializer):
    """
    主机信息序列化器
    定义API输入输出格式和验证规则
    """
    class Meta:
        model = Host
        fields = '__all__'
        extra_kwargs = {
            'root_password': {
                'write_only': True,  # 密码字段仅允许写入
                'style': {'input_type': 'password'}  # 在API文档中显示为密码输入框
            },
            'last_pwd_update': {'read_only': True}  # 自动维护字段
        }

    def validate_hostname(self, value):
        """自定义主机名验证"""
        if not value.startswith('prod-'):
            raise serializers.ValidationError("主机名必须以prod-开头")
        return value